package com.ciko.code.utils;

import android.content.Context;
import android.os.Environment;
import android.widget.Toast;

import com.mywork.R;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;


public class Util
{
	
	public static void showToast(Context mContext, int resId) {
		Toast.makeText(mContext, resId, Toast.LENGTH_SHORT).show();
	}
	
	public static void showToast(Context mContext, String text) {
		Toast.makeText(mContext, text, Toast.LENGTH_SHORT).show();
	}
	
	/**
	 * 根据文件类型检查外置及内置存储卡是否有空间可写
	 *
	 * @param fileType
	 *            文件类型
	 * @param type
	 *            检查范围,0表示所有,1表示只检查外置
	 * @return
	 */
	public static boolean isLimitSDCardSpaceForWrite(int fileType, int type) {
		return com.ciko.code.utils.MultiCard.getInstance().checkSDCardSpace(fileType, type);
	}
	
	/**
	 * 根据文件类型检查外置及内置存储卡是否超过预警空间
	 *
	 * @param fileType
	 *            文件类型
	 * @param type
	 *            检查范围,0表示所有,1表示只检查外置
	 * @return
	 */
	public static boolean isLimitSDCardSpaceForWriteWarning(int fileType, int type) {
		return com.ciko.code.utils.MultiCard.getInstance().islimitSpaceWarning(fileType, type);
	}
	
	/**
	 * 判断存储卡空间(外置、内置存储卡是否有空间可写)
	 *
	 * @param context
	 * @param fileType
	 *            文件类型
	 * @param type
	 *            检查范围,0表示所有,1表示外置
	 * @param bNeedTip
	 *            是否要做出提示语
	 * @return true表示无存储卡或无空间可写,false表示ok
	 */
	public static boolean isSDCardSapceForWriteWithTip(Context context, int fileType, int type, boolean bNeedTip) {
		if (type == 0 && !Util.isSDcardExist())
		{
			if (bNeedTip)
			{
				Util.showToast(context, R.string.image_save_sdcard_deny);
			}
			return true;
		}
		else if (type == 1 && !Util.isExternalSDCardExist())
		{
			if (bNeedTip)
			{
				Util.showToast(context, R.string.image_save_sdcard_deny);
			}
			return true;
		}
		
		if (!Util.isLimitSDCardSpaceForWrite(fileType, type))
		{
			if (bNeedTip)
			{
				Util.showToast(context, R.string.sdcard_not_enough);
			}
			return true;
		}
		
		if (!Util.isLimitSDCardSpaceForWriteWarning(fileType, type))
		{
			if (bNeedTip)
			{
				Util.showToast(context, R.string.sdcard_not_enough_warning);
			}
		}
		
		return false;
	}
	
	/**
	 * 判断是否有SDCARD
	 *
	 * @return
	 */
	public static boolean isSDcardExist() {
		if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED))
		{
			return true;
		}
		else
		{
			return false;
		}
		
	}
	
	/**
	 * 判断是否有外置存储卡
	 *
	 * @return
	 */
	public static boolean isExternalSDCardExist() {
		return MultiCard.getInstance().isExternalSDCardExist();
	}
	
	/**
	 * 获取文件写入路径，无视错误
	 *
	 * @param fileName
	 *            文件全名
	 * @return 返回路径，返回null则拒绝写入操作
	 */
	public static String getWritePathIgnoreError(String fileName) {
		try
		{
			MultiCardFilePath path = MultiCard.getInstance().getWritePath(fileName);
			return path.getFilePath();
		}
		catch (LimitSpaceUnwriteException e)
		{
			e.printStackTrace();
		}
		catch (IllegalArgumentException e)
		{
			e.printStackTrace();
		}
		return null;
	}
	
	/**
	 * 将小时换算成x天x小时
	 * 
	 * @param iHour
	 * @return
	 */
	public static String getDayAndHour(int iHour) {
		int day = iHour / 24;
		int hour = iHour % 24;
		String dayStr = day > 0 ? (day + "天") : "";
		String hourStr = (hour > 0 ? (hour + "小时") : "");
		return dayStr + hourStr;
	}
	
	/**
	 * 将小时换算成x天x小时x分钟
	 *
	 * @return
	 */
	public static Date getStringtoDate(String strTime) {
		Date date = null;
		try
		{
			SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");
			date = sdf.parse(strTime);
		}
		catch (ParseException e)
		{
			e.printStackTrace();
		}
		return date;
	}
	/**
	 * 将小时换算成x天x小时
	 */
	public static Date getStringtoDate1(String strTime) {
		Date date = null;
		try
		{
			SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH时");
			date = sdf.parse(strTime);
		}
		catch (ParseException e)
		{
			e.printStackTrace();
		}
		return date;
	}
}
